const page = Page;
const Monitor = require("./monitor")
module.exports = (options = {}) => {
  const {
    onLoad,
    onShow,
    onReady,
    onHide,
    onShareAppMessage,
    data
  } = options; // 解构传入的page数据
  const mountOptions = {
    data: {
      ...data
    },
    onLoad(...res) {
      // 在这里添加 onLoad 前mixin的代码 
      console.log('小程序全局mixin', ...res);

      if (Monitor.uid) {
        setTimeout(()=>{
          Monitor.createSession(() => {
            setTimeout(()=>{
              Monitor.recordPageChange(...res)
            },1000)
          })
        },1000)
      }




      const opts = res[0];
      const $opts = {};
      this.$opts = $opts;
      if (onLoad) {
        onLoad.apply(this, res);
      }

      // 在这里添加 onLoad 后mixin的代码 
    },
    onShow() {
      // onShow before
      if (onShow) {
        onShow.apply(this);
      }
      // onShow after
    },
    onReady() {
      if (onReady) {
        onReady.apply(this);
      }
    },
    onHide() {
      if (onHide) {
        Monitor.endSession();
        onHide.apply(this);
      }
    },
    onShareAppMessage() {
      // 在这里添加 onShareAppMessage 前mixin的代码 
      if (Monitor) {
        Monitor.eventShare();
      }

      // 然后调用页面的 onShareAppMessage 函数
      if (typeof onShareAppMessage === 'function') {
        return onShareAppMessage.apply(this, arguments);
      }

      // 如果页面没有定义 onShareAppMessage 函数，则返回默认分享数据
      return {
        title: '默认分享标题',
        path:"pages/index/index",
        url:''
        // 其他默认分享属性...
      };
    }
  };

  return page(Object.assign({}, options, mountOptions)); // 调用原生的Page构造函数
};